Granularity in Reverse Engineering
نویسندگان
چکیده
Reverse Engineering is the process of reconstructing high-level design information from program code 3]. Reverse engineering in traditional engineering disciplines is an extraneous activity but in the eld of software engineering it is an integral part of software maintenance. A maintainer needs to understand the code in terms of which part of the code is implementing which of the domain functions the system is performing. This is the rst step for any kind of maintenance activity ranging from simple bug-xes to large scale system enhancements. In addition, the reverse engineering process is used to extract reusable software components, to recover business rules out of a software system, and to generate documentation from the code. Any reverse engineering eeort typically consists of understanding an existing software system. It starts with existing information such as original design documents, user manuals, and the code. Although many sources of information are available, the actual code is the ultimate description of the current state of the system. Hence, at the crux of the reverse engineering process is the problem of program understanding. Why is reverse engineering hard? A program is intimately tied to the cognitive conceptualisation of the programmer. If we remove the programmer from the system, the static code does not communicate the intent of the programmer well to other human beings. But in many situations the program has to be understood in the absence of the person who created it. The code can communicate the computational intent to some extent but it cannot communicate the conceptual intent and how that conceptual intent is related to the system's objectives in a domain. This is one of the fundamental reasons why understanding a program is so diicult. Other reasons why reverse engineering is diicult include the large size and enormous complexity of real-world systems, and inadequate, non-existing or out-of-date documentation. 2 Our Approach There are many tools and techniques developed to date for doing reverse engineering activities. They involve techniques developed in many elds such as Programming Languages, Artiicial Intelligence, Intelligent Tutoring Systems (ITS), Graph Theory, and Graphical Visualisation. Most of these tools are syntactic in nature and extract information like call graphs, interfaces, and dependency graphs. Some tools like Rigi 10, 11] provide a graphical environment in which an engineer can view/organise/group diierent parts of the system to understand them and record her/his understanding of them. But none of them takes the perspective that …
منابع مشابه
GNIREENIGNE: Reverse Engineering or Backwards Engineering?
Reverse engineering involves extracting high-level information from existing code. Reverse engineering is a crucial part of software maintenance since a maintainer needs to understand the code before attempting any modiication. Many eeorts have been made to automatically extract higher-level design information from the code to facilitate various maintenance activities. But many of them are limi...
متن کاملExtracting Reusable Modules from Legacy Code: Considering the Issues of Module Granularity
This paper describes the work of a reverse engineering project. The project is concerned with the identification of reusable modules of code from legacy systems. We apply a number of existing techniques and methods to large COBOL programs and attempt to integrate the methods to satisfy the needs of our industrial sponsors. We have found that the issue of module granularity is one of the importa...
متن کاملReverse Engineering of Computer-Based Control Systems
This article presents a process for the reengineering of computer-based control systems, and describes tools that automate portions of the process. The intermediate representation (IR) for capturing features of computer-based systems during reverse engineering is presented. A novel feature of the IR is that it incorporates the control system software architecture, a view that enables informatio...
متن کاملHuman-Centred Tools for Knowledge-Based Software Reverse Engineering
Reverse engineering is the process of reconstructing high-level design information from program code. Reverse engineering requires program understanding, since the user (typically a maintainer) needs to reconstruct the cognitive conceptualisation of the programmer. There have been some attempts in Artiicial Intelligence (AI) to \understand" a program in terms of pre-deened plans. Such attempts ...
متن کاملIntegrated Media Mining for Virtual Workspace Design
Supporting virtual collaboration can be complex and timeconsuming exercise. One of the key components in setting up virtual collaboration is the design of the virtual workspace as a coherent medium to support the activities involved in collaborative project development. The availability of information about virtual collaboration in virtual workspaces, in the form of action patterns, offers oppo...
متن کاملReverse Engineering of Computer-Based Navy Systems
The �nancial pressure to meet the need for change in computer-based systems through evolution rather than through revolution has spawned the discipline of reengineering. One driving factor of reengineering is that it is increasingly becoming the case that enhanced requirements placed on computer-based systems are overstressing the processing resources of the systems. Thus, the distribution of p...
متن کامل